package com.mind.customer.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mind.customer.domain.vo.RuleCountVo;
import com.mind.customer.domain.vo.RulePassRateListVo;
import com.mind.system.domain.AjCheckResult;
import com.mind.system.domain.AjTicketTask;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 检查结果(AjCheckResult)表数据库访问层
 *
 * @author makejava
 * @since 2024-07-27 19:17:25
 */
@Mapper
public interface AjCheckResultMapper  extends BaseMapper<AjCheckResult> {

    /**
     * 查询检查结果数据集合
     *
     * @param checkResult 检查结果信息
     * @return 检查结果数据集合
     */
    public List<AjCheckResult> selectCheckResultList(AjCheckResult checkResult);

    /**
     * 通过检查结果ID查询检查结果信息
     *
     * @param checkResultId 检查结果ID
     * @return 角色对象信息
     */
    public AjCheckResult selectCheckResultById(Long checkResultId);

    /**
     * 删除检查结果信息
     *
     * @param checkResultId 检查结果ID
     * @return 结果
     */
    public int deleteCheckResultById(Long checkResultId);

    /**
     * 批量删除检查结果信息
     *
     * @param checkResultIds 需要删除的检查结果ID
     * @return 结果
     */
    public int deleteCheckResultByIds(Long[] checkResultIds);

    /**
     * 修改检查结果信息
     *
     * @param checkResult 检查结果信息
     * @return 结果
     */
    public int updateCheckResult(AjCheckResult checkResult);

    /**
     * 新增检查结果信息
     *
     * @param checkResult 检查结果信息
     * @return 结果
     */
    public int insertCheckResult(AjCheckResult checkResult);

    /**
     * 批量新增检查结果信息
     *
     * @param checkResultList 检查结果信息
     * @return 结果
     */
    public int insertCheckResultBatch(@Param("entities") List<AjCheckResult> checkResultList);


    /**
     * 根据名称查检查结果
     *
     * @param name 检查结果名称
     * @return 结果
     */
    AjCheckResult selectCheckResultByName(String name);

    int deleteCheckResultByTicketId(String ticketId);

    List<AjCheckResult> selectByLastVersion(@Param("ticketId") String ticketId, @Param("version") Integer version);

    Integer selectLastVersion(String ticketId);

    List<AjCheckResult> selectByTicketId(@Param("ticketId") String ticketId, @Param("version") Integer version);
    RuleCountVo countByStatusList(@Param("ticketId") String ticketId, @Param("version") Integer version, @Param("statusList") List<Integer> statusList, @Param("ruleName") String ruleName, @Param("ruleset") String ruleset, @Param("ruleType") String ruleType);

    List<RulePassRateListVo> selectRulePassRate(AjTicketTask task);
}

